+2005-07-07 Matthias Clasen <mclasen@redhat.com>
+
+ Fix #157787, reported by Jonathan Blandford:
+
+ * gtk/gtkfilechooserdefault.c
+ (gtk_file_chooser_default_set_current_folder): Don't leave a
+ "trail" behind when set_current_folder is called explicitly.
+ (gtk_file_chooser_default_update_current_folder): New function
+ that is called to update the current folder in response to
+ user actions.
+
+ * gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
+ keep_trail argument, and don't leave a "trail" behind unless
+ it is set.
+
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,
+2005-07-07 Matthias Clasen <mclasen@redhat.com>
+
+ Fix #157787, reported by Jonathan Blandford:
+
+ * gtk/gtkfilechooserdefault.c
+ (gtk_file_chooser_default_set_current_folder): Don't leave a
+ "trail" behind when set_current_folder is called explicitly.
+ (gtk_file_chooser_default_update_current_folder): New function
+ that is called to update the current folder in response to
+ user actions.
+
+ * gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
+ keep_trail argument, and don't leave a "trail" behind unless
+ it is set.
+
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,
+2005-07-07 Matthias Clasen <mclasen@redhat.com>
+
+ Fix #157787, reported by Jonathan Blandford:
+
+ * gtk/gtkfilechooserdefault.c
+ (gtk_file_chooser_default_set_current_folder): Don't leave a
+ "trail" behind when set_current_folder is called explicitly.
+ (gtk_file_chooser_default_update_current_folder): New function
+ that is called to update the current folder in response to
+ user actions.
+
+ * gtk/gtkpathbar.c (_gtk_path_bar_set_path): Add a boolean
+ keep_trail argument, and don't leave a "trail" behind unless
+ it is set.
+
2005-07-06 Manish Singh <yosh@gimp.org>
* demos/gtk-demo/menus.c: change_orientation() should return void,
static gboolean gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
GError **error);
+static gboolean gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
+ const GtkFilePath *path,
+ gboolean keep_trail,
+ GError **error);
static GtkFilePath * gtk_file_chooser_default_get_current_folder (GtkFileChooser *chooser);
static void gtk_file_chooser_default_set_current_name (GtkFileChooser *chooser,
const gchar *name);
path_copy = gtk_file_path_copy (path);
error = NULL;
- result = _gtk_file_chooser_set_current_folder_path (GTK_FILE_CHOOSER (impl), path_copy, &error);
+ result = gtk_file_chooser_default_update_current_folder (GTK_FILE_CHOOSER (impl), path_copy, TRUE, &error);
if (!result)
error_changing_folder_dialog (impl, path_copy, error);
gtk_file_chooser_default_set_current_folder (GtkFileChooser *chooser,
const GtkFilePath *path,
GError **error)
+{
+ return gtk_file_chooser_default_update_current_folder (chooser, path, FALSE, error);
+}
+
+static gboolean
+gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
+ const GtkFilePath *path,
+ gboolean keep_trail,
+ GError **error)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
gboolean result;
if (!check_is_folder (impl->file_system, path, error))
return FALSE;
- if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, error))
+ if (!_gtk_path_bar_set_path (GTK_PATH_BAR (impl->browse_path_bar), path, keep_trail, error))
return FALSE;
if (impl->current_folder != path)
gboolean
_gtk_path_bar_set_path (GtkPathBar *path_bar,
const GtkFilePath *file_path,
+ const gboolean keep_trail,
GError **error)
{
GtkFilePath *path;
/* Check whether the new path is already present in the pathbar as buttons.
* This could be a parent directory or a previous selected subdirectory.
*/
- if (gtk_path_bar_check_parent_path (path_bar, file_path, path_bar->file_system))
+ if (keep_trail &&
+ gtk_path_bar_check_parent_path (path_bar, file_path, path_bar->file_system))
return TRUE;
path = gtk_file_path_copy (file_path);
return result;
}
-
/* FIXME: This should be a construct-only property */
void
_gtk_path_bar_set_file_system (GtkPathBar *path_bar,
GtkFileSystem *file_system);
gboolean _gtk_path_bar_set_path (GtkPathBar *path_bar,
const GtkFilePath *file_path,
+ gboolean keep_trail,
GError **error);
void _gtk_path_bar_up (GtkPathBar *path_bar);
void _gtk_path_bar_down (GtkPathBar *path_bar);